import jieba
import string
def count_word_freq(file_path):
    # 初始化一个字典来存储词频
    word_freq = {}      #字典用于存储每个词及其出现次数
    punctuation = string.punctuation + "。、，！？；：“”（）《》【】"  #过滤中文标点符号
    # 打开并读取文件
    with open(file_path, 'r', encoding='utf-8') as file:        #以只读模式打开文件，确保文件使用后自动关闭
        content = file.read()       #读取整个文件的内容到一个字符串
        # 使用jieba进行分词，直接生成一个词语的列表
        words = jieba.lcut(content)
        # 统计词频，同时过滤掉标点符号
        for word in words:
            if word.strip() and word not in punctuation:  # 过滤标点符号
                if word in word_freq:
                    word_freq[word] += 1
                else:
                    word_freq[word] = 1
    # 返回词频字典
    return word_freq
def main():
    # 使用原始字符串来避免转义序列问题
    file_path = r'E:\soft\三国演义.txt'
    word_freq = count_word_freq(file_path)
    # 将词频字典降序排序并打印，输出前10个最常见的词
    sorted_word_freq = sorted(word_freq.items(), key=lambda item: item[1], reverse=True)
    for word, freq in sorted_word_freq[:10]:
        print(f"{word}: {freq}")
if __name__ == "__main__":
    main()
